package com.aust.lambda;

import java.util.function.Function;

public class TestLambda8 {
    public static void main(String[] args) {

        /**
         * Function<T, R>是Java 8引入的一个函数式接口，位于java.util.function包中。它代表一个接受一个参数并产生结果的函数。
         * Function<T, R>是Java函数式编程的核心接口之一，它：
         * 表示一个接受一个参数并产生结果的函数
         * 可以通过Lambda表达式、方法引用或匿名类创建实例
         * 提供了andThen和compose方法支持函数组合
         * 广泛应用于Stream API和函数式编程场景
         * 有多个变体接口处理不同类型和数量的参数
         */
        Function<String, Integer> function1 = new Function<String, Integer>() {
            public Integer apply(String s) {
                return s.length();
            }
        };
        System.out.println(function1.apply("hello"));

        Function<String, Integer> function2 = (String s) -> {
            return s.length();
        };
        System.out.println(function2.apply("world"));

        Function<String, Integer> function3 = s -> s.length();
        System.out.println(function3.apply("nihao"));

        Function<String, Integer> function4 = String::length;
        System.out.println(function4.apply("shijie"));

    }
}
